<?php

class UsuariosController extends AppController {

    var $name = 'Usuarios';
    public $helpers = array('Form', 'Html', 'Js', 'Time');

    public function beforeFilter() {
        parent::beforeFilter();

        $user = $this->Session->read('Auth.User');
        $negados = array();
        if ($user[0]['Perfil']['id'] == 1) {
            $negados = array('adicionar', 'editar', 'index');
        } else if ($user[0]['Perfil']['id'] == 3) {
            $negados = array('editar');
        }

        if (in_array($this->params['action'], $negados)) {
            $this->redirect($this->pagErro);
        }
    }

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['nm_senha_usuario'])) {
            $this->data[$this->alias]['nm_senha_usuario'] = AuthComponent::password($this->data[$this->alias]['nm_senha_usuario']);
        }
        return true;
    }

    public function index() {
        // enviar a viriável lista para o view com um select da tabela fretes
        $this->set('lista', $this->Usuario->find('all'));
        //print_r($this->Session->read('Auth.User'));
    }

    public function adicionar() {
        $perf = ClassRegistry::init('Perfil');
        //Faz busca em todas as cidades e joga em $cidades(busca apenas o campo nm_cidade)
        $cidades = $perf->find('list', array(
            'fields' => array('nm_perfil')
        ));
        $tipo_perfil = $perf->find('list', array('fields' => array('ds_perfil')));
        // envia dados das cidades para a view com o nome $lista_cidades
        $this->set('lista_perfis', $cidades);
        $this->set('tipo_perfil', $tipo_perfil);

        // se for requisição com dados 'post'
        if ($this->request->is('post')) {
            $this->request->data['Usuario']['nm_senha_usuario'] = AuthComponent::password($this->request->data['Usuario']['nm_senha_usuario']);
            //executa salvar, se salvar
            if ($this->Usuario->save($this->request->data)) {
                // define mensagem de salvamento e redireciona para o index
                $this->Session->setFlash('Usuario salvo com sucesso');
                $this->redirect(array('action' => 'index'));
            } else {
                // se der erro define mensagem de erro e direciona para o index
                $this->Session->setFlash('Falha ao salvar Usuário');
                $this->redirect(array('action' => 'index'));
            }
        }
    }

    public function editar($id = null) {
        // Carrega em $frete_atual ods dados do frete informado pelo parâmetro id
        $usuario_atual = $this->Usuario->findById($id);
        //Carrega o model Cidade
        $perf = ClassRegistry::init('Perfil');
        //Faz busca em todas as cidades e joga em $cidades(busca apenas o campo nm_cidade)
        $cidades = $perf->find('list', array(
            'fields' => array('nm_perfil')
        ));
        $tipo_perfil = $perf->find('list', array('fields' => array('ds_perfil')));
        // envia dados das cidades para a view com o nome $lista_cidades
        $this->set('lista_perfis', $cidades);
        $this->set('tipo_perfil', $tipo_perfil);

        //Se for envio via post ou put(que eu não sei o q é)
        if ($this->request->is('post') || $this->request->is('put')) {
            //Carrega o modelo com o id do request
            $this->Usuario->id = $id;
            //Se salvar
            if ($this->Usuario->save($this->request->data)) {
                // Declara a mensagem e redireciona para o index do frete
                $this->Session->setFlash('Usuário salvo com sucesso');
                $this->redirect(array('action' => 'index'));
            } else {
                //senão mostra a mensagem de erro
                $this->Session->setFlash('Falha ao salvar');
            }
        }

        // se não houver dados enviados para gravar carrega a requisição com os dados da pesquisa do frete
        if (!$this->request->data) {
            $this->request->data = $usuario_atual;
        }
    }

    public function deletar($id) {
        //Se deletar o frete com id do parâmtro
        if ($this->Frete->delete($id)) {
            // Coloca mensagem de exclusão e redireciona para o index
            $this->Session->setFlash('Usuário deletado com sucesso');
            $this->redirect(array('action' => 'index'));
        }
    }

    public function login() {
        $this->layout = 'login';
        if ($this->request->is('post')) {
            $dados = $this->Usuario->find('all', array('conditions' => array(
                    'nm_email_usuario' => $this->request->data['Usuario']['nm_email_usuario'],
                    'nm_senha_usuario' => AuthComponent::password($this->request->data['Usuario']['nm_senha_usuario'])
            )));
            //print_r($dados);
            //print_r($this->request->data);
            if ($this->Auth->login($dados)) {
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash('Usuário ou senha inválido');
            }
        }
    }

    public function logout() {
        $this->redirect($this->Auth->logout());
    }

    function erropermissao() {
        
    }

}

?>
